package storeWater;

import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;

public class Solution {
    public int storeWater(int[] bucket, int[] vat) {
        // 贪心 + 枚举
        // 升级的操作一定要放在蓄水的操作之前
        // 枚举蓄水的操作次数 对于每个桶 需要升级的次数= Max(vat[i]/k-bucket[i],0)
        // 蓄水的操作数一定小于等于水缸最大的容量
        int ans = Integer.MAX_VALUE;
        int max = Arrays.stream(vat).max().getAsInt();
        if(max == 0)return 0;
        for (int k = 1; k <= max&&k<ans; k++) {
            int m = 0; // 所有桶需要的操作次数
            for (int i = 0; i < bucket.length; i++) {
                m += Math.max(0, (vat[i] + k - 1) / k - bucket[i]);
            }
            ans = Math.min(k+m,ans);
        }
        return ans;
        // 贪心 + 优先级队列
    }
}